Video graphic adapters (VGA) are used to render video signals to be displayed on display devices such as computer monitors. In operation, VGAs will generally receive graphics information from a system, such as a computer system, and perform the necessary graphics calculations upon the received information in order to render graphics signals. Graphics calculations are performed for many different types of information, including lighting information, user view information, texture information, and Z-plane data information, which indicates where one device is relative to another device. Once all calculations have been performed upon an object, the data representing the object to be displayed is written into a frame buffer. Once the graphics calculations have been repeated for all objects associated with a specific frame, the data stored within the frame buffer is rendered to create a video signal that is provided to the display device.
The amount of time taken for an entire frame of information to be calculated and provided to the frame buffer becomes a bottleneck in a video graphics system as the calculations associated with the graphics become more complicated. Contributing to the increased complexity of the graphics calculations is the increased need for higher resolution video, as well as the need for more complicated video, such as 3-D video or stereoscopic video. The video image observed by the human eye becomes distorted or choppy when the amount of time taken to provide an entire frame of video exceeds the amount of time which the display must be refreshed with a new graphic, or new frame, in order to avoid perception by the human eye.
The use of multiple graphic adapters has been proposed in order to provide data to the frame buffer at a rate fast enough to avoid detection by the human eye. Current methods of using multiple graphics devices have partitioned the graphics associated with each such that each one of the multiple processors is responsible for rendering a portion of each frame. Each processor renders a portion of a frame in order to assure data is provided to the frame buffer within a required amount of time.
Once such partitioning method split the screen into odd and even display lines, whereby one video adapter would render all of the odd lines associated with a specific frame, while the second device would render all of the even lines associated with the frame. Another prior art method split the screen into two discrete areas, such as a top and a bottom half, whereby each display device would be responsible for rendering one portion of the screen. However, problems with these implementations occur.
One problem with present implementations is that all of the video data from the system needs to be sent to both of the data graphics devices. For example, in the implementation where the graphics device split the odd and even lines it is necessary for each video device to receive the object's video information from the system. The amount of data sent by the system to the graphics adapters in effect doubles, because each graphics adapter needs all the information. In an implementation where the data is be sent to both devices at the same time, there is hardware and/or software overhead associated with controlling the reception of the data.
Workload distribution is another problem associated with known graphics systems having multiple adapters. When each of the two graphics devices is processing a portion of a single frame, a likelihood exists that the amount of work to be done by one of the processors for a given frame will be significantly greater than the amount of work being done by the other video device. For example, where a first video device is to render the video for the top half of the screen, it is likely that it will have fewer calculations to perform than the device calculating the graphics for the bottom half of the frame. One reason for this disparity in workload distribution is because it is common for the top half of a frame to contain skyscape information which is less computationally intensive than for the objects associated with action video often found on the bottom half of a display device or frame. When the workload distribution is not even, one graphics device will in effect end up stalling while the second graphics device completes its calculations. This is inefficient.
Yet another problem associated with the prior embodiments is that each of the graphics devices has to calculate the shape of each and every object on the frame. Each device must calculate each object's shape in order to determine whether or not the object, or a portion of the object, must be further processed by the graphics engine associated with the graphics device. An associated problem is that when an object straddles the demarcation line between an area that the first graphics device is to process and an area that the second graphics device is to process, it is necessary for both devices to process the object. For example, when a portion of an object is in the top half of the screen, and a portion on the bottom half of the screen, calculations associated with the object are calculated by both graphic devices.
Yet another problem with the known implementations of multiple graphic devices is the need to carefully match the digital-to-analog converters (DACs) associated with each VGA. The DACs of each VGA provide a plurality of voltages, one for each video component, such as the red/green/blue components. If the DACs are not carefully matched, it is possible for colors viewed on a display device to have slightly different shades of color because of the lack of calibration between the devices' DACs.
Therefore, it would be desirable to have a method and apparatus that allows the use of multiple video graphics devices that overcome the problems associated with the prior art.